package com.gitee.qdbp.jdbc.api;

import com.gitee.qdbp.jdbc.plugins.DbPluginHelper;
import com.gitee.qdbp.jdbc.plugins.SqlDialect;
import com.gitee.qdbp.jdbc.sql.SqlBuffer;
import com.gitee.qdbp.jdbc.sql.SqlBuilder;
import com.gitee.qdbp.jdbc.sql.build.CommonSqlTools;
import com.gitee.qdbp.jdbc.sql.parse.SqlFragmentContainer;
import com.gitee.qdbp.jdbc.utils.ParseTools;

/**
 * SqlContext
 *
 * @author zhaohuihua
 * @version 20210627
 */
interface SqlContext {

    /**
     * 新建一个SqlBuffer
     * 
     * @return SqlBuffer
     * @since 4.1.0
     */
    SqlBuffer newSqlBuffer();

    /**
     * 新建一个SqlBuilder
     * 
     * @return SqlBuilder
     * @since 4.1.0
     */
    SqlBuilder newSqlBuilder();

    /**
     * 解析工具类
     * 
     * @return ParseTools
     * @since 4.1.0
     */
    ParseTools parseTools();

    /**
     * 构造公共SQL生成工具
     * 
     * @return CommonSqlHelper
     * @since 4.1.0
     */
    CommonSqlTools sqlTools();

    /**
     * SQL片段容器
     * 
     * @return SqlFragmentContainer
     * @since 4.1.0
     */
    SqlFragmentContainer sqlContainer();

    /**
     * 获取SQL方言处理类
     * 
     * @return SQL方言处理类
     */
    SqlDialect sqlDialect();

    /**
     * 获取插件容器
     * 
     * @return DbPluginHelper
     * @since 4.1.0
     */
    DbPluginHelper plugins();
}
